#ifndef __SIMULATION_H__
#define __SIMULATION_H__

#include <hge.h>
#include <hgeresource.h>

#include "Grid.h"

class CSimulation
{
public:
  static CSimulation * GetInstance();
  static void Run();

private:
  static bool FrameFunction();
  static bool RenderFunction();

private:
  CSimulation();
  CSimulation(
      const CSimulation & _Simulation
    );
  const CSimulation & operator=(
      CSimulation & _Simulation
    );

public:
  ~CSimulation();

  HGE                * GetHGEObject()          const { return m_Hge;                }
  hgeResourceManager * GetHgeResourceManager() const { return m_HgeResourceManager; }

private:
  static CSimulation * _Instance;

private:
  HGE                * m_Hge;
  hgeResourceManager * m_HgeResourceManager;

  CGrid              * m_Grid;
};

#endif //__SIMULATION_H__
